package main

import (
	"time"
)

func main() {
	var out []*int
	//for循环的临时变量会复用，变量的地址是不会变得，会发生指针逃逸
	//解决办法，将变量值复制出来（注：不是地址一直是同一个地址，只是指向的值变了）
	for i := 0; i < 3; i++ {
		temp := i
		out = append(out, &temp)
	}
	for i := 0; i < 3; i++ {
		func(i int) {
			out = append(out, &i)
		}(i)
	}

	//for i := 0; i < 3; i++ {
	//	out = append(out, &i)
	//}
	//for _, value := range out {
	//	fmt.Println(*value)
	//}

	//变量复用，指针逃逸
	//goodsId := []uint64{1, 2, 3, 4, 5}
	//for _, id := range goodsId {
	//	go func() {
	//		fmt.Println(strconv.Itoa(int(id)))
	//	}()
	//}
	time.Sleep(10 * time.Second)
}
